#include "utils.h"

// ==============================
// 通用按钮创建函数
// ==============================

/**
 * @brief 创建导航栏图片按钮
 * @param parent 父对象
 * @param x X坐标
 * @param y Y坐标  
 * @param w 宽度
 * @param h 高度
 * @param pic_path 图片路径
 * @return 创建的图片按钮对象
 * 
 * 创建具有默认和按下状态样式的导航栏按钮
 */
lv_obj_t *lv_imgS4SW(lv_obj_t *parent, int x, int y, int w, int h, char *pic_path)
{
    lv_obj_t *imgbtn = lv_imgbtn_create(parent); // 创建图片按钮对象
    if(imgbtn == NULL) {                         // 检查创建是否成功
        LV_LOG_ERROR("lv_imgbtn_create fail:");  // 输出错误日志
        return NULL;                             // 返回空指针
    }

    lv_obj_set_size(imgbtn, w, h);               // 设置按钮大小
    lv_imgbtn_set_src(imgbtn, LV_IMGBTN_STATE_RELEASED, NULL, pic_path, NULL); // 设置按钮图片

    // 将两种样式应用到按钮对应的状态上
    lv_obj_add_style(imgbtn, &style_def, LV_STATE_DEFAULT); // 默认状态应用半透明样式
    lv_obj_add_style(imgbtn, &style_pr, LV_STATE_PRESSED);  // 按下状态应用恢复样式

    lv_obj_align(imgbtn, LV_ALIGN_TOP_LEFT, x, y); // 设置按钮对齐位置

    return imgbtn;                                // 返回创建的按钮对象
}

/**
 * @brief 创建通用图标按钮
 * @param parent 父对象
 * @param x X坐标
 * @param y Y坐标
 * @param w 宽度
 * @param h 高度
 * @param pic_path 图片路径
 * @return 创建的图片按钮对象
 * 
 * 创建具有按下状态样式的通用图标按钮
 */
lv_obj_t *lv_imgbtn(lv_obj_t *parent, int x, int y, int w, int h, char *pic_path)
{
    lv_obj_t *imgbtn = lv_imgbtn_create(parent); // 创建图片按钮对象
    if(imgbtn == NULL) {                         // 检查创建是否成功
        LV_LOG_ERROR("lv_imgbtn_create fail:");  // 输出错误日志
        return NULL;                             // 返回空指针
    }

    lv_obj_set_size(imgbtn, w, h);               // 设置按钮大小
    lv_imgbtn_set_src(imgbtn, LV_IMGBTN_STATE_RELEASED, NULL, pic_path, NULL); // 设置按钮图片
    lv_obj_add_style(imgbtn, &style_pr, LV_STATE_PRESSED); // 添加按下状态样式

    lv_obj_align(imgbtn, LV_ALIGN_TOP_LEFT, x, y); // 设置按钮对齐位置

    return imgbtn;                                // 返回创建的按钮对象
}

/**
 * @brief 创建窗口控制按钮
 * @param parent 父对象
 * @param x X坐标
 * @param y Y坐标
 * @param w 宽度
 * @param h 高度
 * @param pic_path 图片路径
 * @return 创建的图片按钮对象
 * 
 * 创建用于窗口控制的图片按钮
 */
lv_obj_t *lv_imgwin(lv_obj_t *parent, int x, int y, int w, int h, char *pic_path)
{
    lv_obj_t *imgbtn = lv_imgbtn_create(parent); // 创建图片按钮对象
    if(imgbtn == NULL) {                         // 检查创建是否成功
        LV_LOG_ERROR("lv_imgbtn_create fail:");  // 输出错误日志
        return NULL;                             // 返回空指针
    }

    lv_obj_set_size(imgbtn, w, h);               // 设置按钮大小
    lv_imgbtn_set_src(imgbtn, LV_IMGBTN_STATE_RELEASED, NULL, pic_path, NULL); // 设置按钮图片
    lv_obj_add_style(imgbtn, &style_pr, LV_STATE_PRESSED); // 添加按下状态样式

    lv_obj_align(imgbtn, LV_ALIGN_TOP_LEFT, x, y); // 设置按钮对齐位置

    return imgbtn;                                // 返回创建的按钮对象
}